package modelApp

import model.Villano
import org.uqbar.commons.model.ObservableUtils
import org.uqbar.commons.utils.Observable

@Observable
class EdicionVillanoAppModel {
	
	@Property Villano villanoSeleccionado
	
	new (Villano villano) { this.villanoSeleccionado = villano }
}

@Observable
class EdicionHobbiesAppModel extends EdicionVillanoAppModel {
	
	@Property var String hobbieDel
	@Property var String nuevoHobbie
	
	new(Villano villano) { super(villano) }
	
	/** Agrega un hobbie al villano seleccionado */
	def agregarHobbie(){ this.villanoSeleccionado.agregarHobbie(nuevoHobbie) }
	
	/** Quita un determinado hobbie al villano seleccionado */
	def quitarHobbie(){ this.villanoSeleccionado.quitarHobbie(hobbieDel) }
	
}

@Observable
class EdicionSenhasAppModel extends EdicionVillanoAppModel {
	
	@Property var String nuevaSenha
	@Property var String senhaDel
	
	new(Villano villano) { super(villano) }
	
	/** Agrega una nueva senha particular al villano seleccionado. */
	def agregarSenhaParticular(){ this.villanoSeleccionado.agregarSenhaParticular(nuevaSenha) }
	
	/** Quita una senha particular al villano. */
	def quitarSenhaParticular(){ this.villanoSeleccionado.quitarSenhaParticular(senhaDel) }
}


@Observable
class EdicionSexoAppModel extends EdicionVillanoAppModel {
	
	@Property var String sexoSeleccionado
	
	new(Villano villano) { super(villano) }
	
	/** Modifica el sexo del villano, lo reemplaza por el sexo seleccionado. */
	def setSexo(){
		villanoSeleccionado.sexo=sexoSeleccionado
	  	ObservableUtils.firePropertyChanged(Villano, "sexo", villanoSeleccionado.sexo)
	}
	
}